//函数类型接口 

// interface ConfigFn{
// (value1:string,value2:string):string
// }

// let setData:ConfigFn=function(value1:string,value2:string):string{
// console.log(value1+value2)
// return value1+value2
// }
// setData('zhansan','zaichifan ')
//返回string 同时返回其他类型 
//泛型接口 

// interface ConfigFn{
//     <T>(value:T):T
// }

// var getData:ConfigFn=function<T>(value:T):T{
//   console.log(value) 
// return value;
// }
//1.添加了类型变量T。 T帮助我们捕获用户传入的类型
// getData<string>('ceshi')
//明确的指定了T是string类型，并做为一个参数传给函数
// getData('ceshi')
//类型推论 -- 即编译器会根据传入的参数自动地帮助我们确定T的类型
 //T帮助我们捕获用户传入的类型


 
interface SearchFunc{
    (source:string,subString:string):boolean
}

function muSearch<SearchFunc>(source:string,subString:string){

}

function myHandle<T>(source:string,subString:string){

}